/**
 * 以 abstract 的类是抽象类，不能用来创建对象
 * 专门用来被继承的类
 */
abstract class Father {
    first_name: string = '张'

    // 定义一个抽象方法
    // 抽象方法使用 abstract 开头，没有方法体
    // 抽象方法只能定义在抽象类中，子类必须对抽象方法进行重写
    abstract sayHello():void;
}

class Son extends Father {
    second_name: string

    constructor(second_name: string) {
        super()
        this.second_name = second_name
    }

    sayHello(): void {
        console.log('qqq')
    }

}

const son = new Son('三')
